---
title: 核心
description: Ultracite 的基础配置，包含与框架无关的 lint 规则。
---

Ultracite 的核心配置提供了一组全面的、与框架无关的 lint 规则和格式化设置。这是所有其他特定框架配置扩展的基础。

## 安装

核心配置在运行以下命令时会自动包含：

```bash
npx ultracite init
```

或者手动将其添加到你的 `biome.jsonc`：

```jsonc title="biome.jsonc"
{
  "extends": ["ultracite/core"]
}
```

## 概览

核心配置包含数百条严格的 lint 规则，涵盖：

- **无障碍 (a11y)**：强制执行 ARIA 属性、语义化 HTML 以及键盘导航
- **复杂度**：降低认知复杂度并强制最佳实践
- **正确性**：防止常见错误并强制类型安全
- **性能**：优化代码以提高运行时性能
- **安全性**：防止安全漏洞
- **风格**：强制一致的代码风格
- **可疑模式**：捕获可能表明错误的可疑模式

## 格式化设置

- **缩进**：2 个空格
- **行宽**：80 个字符
- **行结尾**：LF (Unix-style)
- **分号**：始终需要
- **引号**：JavaScript/TypeScript 和 JSON 使用双引号
- **尾随逗号**：ES5 风格（多行数组/对象）
- **箭头函数括号**：始终包含括号

## 主要特性

### TypeScript 严格性

核心配置启用了 TypeScript 的严格检查：

- 不鼓励使用 `any`（`noExplicitAny: error`）
- 要求处理 `null/undefined`
- 在某些情况下更偏好显式类型
- 在整个代码库中强制类型安全

### 与 ESLint 推荐规则的等效项

包含常见的最佳实践规则：

- 不允许未使用的变量（`noUnusedVariables: error`）
- 不允许未使用的导入（`noUnusedImports: error`）
- 不允许显式 eval（`noGlobalEval: error`）
- 防止原型污染（`noPrototypeBuiltins: error`）

### 默认启用的无障碍规则

等同于无障碍标准的规则：

- ARIA 属性必须有效
- 优先使用语义化 HTML 元素
- 要求支持键盘导航
- 要求图片的替代文本

### Node.js 支持

环境特定处理：

- 识别 Node.js 全局变量（`module`、`process`）
- 强制对内置模块使用 `node:` 协议
- 支持 CommonJS 和 ESM

## 完整规则参考

### 无障碍 (a11y)

| 规则 | 设置 | 描述 |
|------|---------|-------------|
| `noAccessKey` | `error` | 强制不在任何 HTML 元素上使用 `accessKey` 属性。 |
| `noAriaHiddenOnFocusable` | `error` | 强制不可在可聚焦元素上设置 `aria-hidden="true"`。 |
| `noAriaUnsupportedElements` | `error` | 强制不在不支持 ARIA 角色、状态和属性的元素上使用这些属性。 |
| `noAutofocus` | `off` | 强制不在元素上使用 `autoFocus` prop。 |
| `noDistractingElements` | `error` | 强制不使用会分散注意力的元素。 |
| `noHeaderScope` | `error` | scope 属性应仅在 `<th>` 元素上使用。 |
| `noInteractiveElementToNoninteractiveRole` | `error` | 强制不可将非交互性的 ARIA 角色分配给交互性 HTML 元素。 |
| `noLabelWithoutControl` | `error` | 强制 label 元素或组件具有文本标签并关联相应的输入。 |
| `noNoninteractiveElementInteractions` | `error` | 禁止在非交互性元素上使用事件处理程序。 |
| `noNoninteractiveElementToInteractiveRole` | `error` | 强制不可将交互性 ARIA 角色分配给非交互性 HTML 元素。 |
| `noNoninteractiveTabindex` | `error` | 强制不可将 `tabIndex` 分配给非交互性 HTML 元素。 |
| `noPositiveTabindex` | `error` | 防止在 `tabIndex` 属性上使用正整数。 |
| `noRedundantAlt` | `error` | 强制 img 的 alt 属性中不包含单词 `image`、`picture` 或 `photo`。 |
| `noRedundantRoles` | `error` | 强制显式 role 属性不应与元素的隐式/默认 role 相同。 |
| `noStaticElementInteractions` | `error` | 强制具有点击处理器的静态可见元素（例如 `<div>`）使用有效的 role 属性。 |
| `noSvgWithoutTitle` | `error` | 强制在 `svg` 元素中使用 title 元素。 |
| `useAltText` | `error` | 强制所有需要替代文本的元素具有对终端用户有意义的信息。 |
| `useAnchorContent` | `error` | 强制锚点具有内容，且内容对屏幕阅读器可访问。 |
| `useAriaActivedescendantWithTabindex` | `error` | 强制在具有 aria-activedescendant 的非交互性 HTML 元素上分配 `tabIndex`。 |
| `useAriaPropsForRole` | `error` | 强制具有 ARIA 角色的元素必须具有该角色所需的所有 ARIA 属性。 |
| `useAriaPropsSupportedByRole` | `error` | 强制 ARIA 属性对元素支持的角色有效。 |
| `useButtonType` | `error` | 强制按钮元素使用 `type` 属性。 |
| `useFocusableInteractive` | `error` | 具有交互性角色并带有交互处理程序的元素必须是可聚焦的。 |
| `useHeadingContent` | `error` | 强制标题元素（`h1`、`h2` 等）具有内容，并且该内容对屏幕阅读器可访问。 |
| `useHtmlLang` | `error` | 强制 `html` 元素具有 `lang` 属性。 |
| `useIframeTitle` | `error` | 强制 iframe 元素使用 title 属性。 |
| `useKeyWithClickEvents` | `error` | 强制 `onClick` 同时至少包含以下之一：`onKeyUp`、`onKeyDown`、`onKeyPress`。 |
| `useKeyWithMouseEvents` | `error` | 强制 `onMouseOver` / `onMouseOut` 同时伴随 `onFocus` / `onBlur`。 |
| `useMediaCaption` | `error` | 强制音频和视频元素必须有用于字幕的 track。 |
| `useSemanticElements` | `error` | 检测在 JSX 元素中使用 role 属性并建议改为使用语义化元素。 |
| `useValidAnchor` | `error` | 强制所有锚点都是有效且可导航的元素。 |
| `useValidAriaProps` | `error` | 确保 `aria-*` ARIA 属性全部有效。 |
| `useValidAriaRole` | `error` | 具有 ARIA 角色的元素必须使用有效的、非抽象的 ARIA 角色。 |
| `useValidAriaValues` | `error` | 强制 ARIA 状态和值是有效的。 |
| `useValidAutocomplete` | `error` | 在输入元素上为 autocomplete 属性使用有效值。 |
| `useValidLang` | `error` | 确保传递给 `lang` 属性的值是正确的 ISO 语言和/或国家代码。 |
| `useGenericFontNames` | `error` | 在字体族（CSS）中强制包含通用族关键字，禁止缺失。 |

### 复杂度

| 规则 | 设置 | 描述 |
|------|---------|-------------|
| `noAdjacentSpacesInRegex` | `error` | 禁止在正则字面量中不清晰地连续使用空格字符。 |
| `noArguments` | `error` | 禁止使用 arguments。 |
| `noBannedTypes` | `error` | 禁止使用原始类型别名和具有误导性的类型。 |
| `noCommaOperator` | `error` | 禁止使用逗号运算符。 |
| `noEmptyTypeParameters` | `error` | 禁止在类型别名和接口中使用空的类型参数。 |
| `noExcessiveCognitiveComplexity` | `error` | 禁止认知复杂度超过给定分数的函数。 |
| `noExcessiveLinesPerFunction` | `off` | 限制函数中的代码行数。 |
| `noExcessiveNestedTestSuites` | `error` | 在测试文件中强制限制嵌套 `describe()` 的最大深度。 |
| `noExtraBooleanCast` | `error` | 禁止不必要的布尔强制转换。 |
| `noFlatMapIdentity` | `error` | 禁止在 flatMap 上使用不必要的回调。 |
| `noForEach` | `error` | 优先使用 `for...of` 而非 `Array.forEach`。 |
| `noImplicitCoercions` | `off` | 禁止简写类型转换。 |
| `noImportantStyles` | `off` | 禁止使用 `!important` 样式（CSS）。 |
| `noStaticOnlyClass` | `error` | 当类没有非静态成员时报告该规则。 |
| `noThisInStatic` | `error` | 在静态上下文中禁止使用 `this` 和 `super`。 |
| `noUselessCatch` | `error` | 禁止不必要的 catch 子句。 |
| `noUselessConstructor` | `error` | 禁止不必要的构造函数。 |
| `noUselessContinue` | `error` | 避免使用不必要的 continue。 |
| `noUselessEmptyExport` | `error` | 禁止在模块文件中无实际作用的空导出。 |
| `noUselessEscapeInRegex` | `error` | 禁止在正则字面量中不必要的转义序列。 |
| `noUselessFragments` | `error` | 禁止不必要的片段。 |
| `noUselessLabel` | `error` | 禁止不必要的标签。 |
| `noUselessLoneBlockStatements` | `error` | 禁止不必要的嵌套块语句。 |
| `noUselessRename` | `error` | 禁止将导入、导出和解构赋值重命名为相同的名称。 |
| `noUselessStringConcat` | `error` | 禁止不必要的字符串或模板字面量拼接。 |
| `noUselessStringRaw` | `error` | 禁止在没有任何转义序列的模板字符串中不必要地使用 `String.raw`。 |
| `noUselessSwitchCase` | `error` | 禁止 switch 语句中无意义的 case。 |
| `noUselessTernary` | `error` | 当存在更简单的替代方案时禁止使用三元运算符。 |
| `noUselessThisAlias` | `error` | 禁止无用的 `this` 别名。 |
| `noUselessTypeConstraint` | `error` | 禁止将 `any` 或 `unknown` 用作类型约束。 |
| `noUselessUndefinedInitialization` | `error` | 禁止将变量初始化为 `undefined`。 |
| `noVoid` | `error` | 禁止使用 `void` 运算符，该运算符不常见。 |
| `useArrowFunction` | `error` | 在函数表达式中使用箭头函数。 |
| `useDateNow` | `error` | 使用 `Date.now()` 获取自 Unix 纪元以来的毫秒数。 |
| `useFlatMap` | `error` | 当 `map().flat()` 一起使用时，鼓励使用 `.flatMap()`。 |
| `useIndexOf` | `error` | 在查找项目索引时，优先使用 `Array#{indexOf,lastIndexOf}()` 而非 `Array#{findIndex,findLastIndex}()`。 |
| `useLiteralKeys` | `error` | 强制使用字面量访问属性而非计算属性访问。 |
| `useNumericLiterals` | `error` | 禁止使用 `parseInt()` 和 `Number.parseInt()`，优先使用二进制、八进制和十六进制字面量。 |
| `useOptionalChain` | `error` | 强制使用简洁的可选链而不是链式逻辑表达式。 |
| `useRegexLiterals` | `error` | 强制在可能的情况下使用正则字面量而不是 `RegExp` 构造函数。 |
| `useSimpleNumberKeys` | `error` | 禁止使用非十进制或使用下划线作为分隔符的数字字面量作为对象成员名。 |
| `useSimplifiedLogicExpression` | `error` | 从逻辑表达式中删除冗余项。 |
| `useWhile` | `error` | 当初始化器和更新表达式不需要时，建议使用 while 循环而非 for 循环。 |

### 正确性

| 规则 | 设置 | 描述 |
|------|---------|-------------|
| `noConstAssign` | `error` | 防止对 const 变量重新赋值。 |
| `noConstantCondition` | `error` | 禁止在条件中使用常量表达式。 |
| `noConstantMathMinMaxClamp` | `error` | 禁止在结果本身为常量时使用 `Math.min` 和 `Math.max` 来夹住一个值。 |
| `noConstructorReturn` | `error` | 禁止从构造函数返回一个值。 |
| `noEmptyCharacterClassInRegex` | `error` | 禁止在正则字面量中出现空的字符类。 |
| `noEmptyPattern` | `error` | 禁止空的解构模式。 |
| `noGlobalDirnameFilename` | `error` | 禁止在全局作用域中使用 `__dirname` 和 `__filename`。 |
| `noGlobalObjectCalls` | `error` | 禁止将全局对象属性当作函数调用。 |
| `noInnerDeclarations` | `error` | 禁止在块外可访问的函数和 `var` 声明。 |
| `noInvalidBuiltinInstantiation` | `error` | 确保内置对象正确实例化。 |
| `noInvalidConstructorSuper` | `error` | 防止在类中错误使用 `super()`。 |
| `noInvalidDirectionInLinearGradient` | `error` | 禁止在线性渐变函数中使用非标准方向值（CSS）。 |
| `noInvalidGridAreas` | `error` | 禁止在 CSS Grid 布局中使用无效的命名网格区域（CSS）。 |
| `noInvalidPositionAtImportRule` | `error` | 禁止在无效位置使用 `@import` at-rule（CSS）。 |
| `noInvalidUseBeforeDeclaration` | `error` | 禁止在声明之前使用变量和函数参数。 |
| `noMissingVarFunction` | `error` | 禁止缺失用于 CSS 变量的 `var` 函数（CSS）。 |
| `noNodejsModules` | `off` | 禁止使用 Node.js 内置模块。 |
| `noNonoctalDecimalEscape` | `error` | 禁止在字符串字面量中使用 `\8` 和 `\9` 转义序列。 |
| `noPrecisionLoss` | `error` | 禁止会导致精度丢失的字面量数字。 |
| `noPrivateImports` | `off` | 限制导入私有导出。 |
| `noProcessGlobal` | `off` | 禁止使用全局 `process`。 |
| `noRestrictedElements` | `error` | 禁止使用配置的元素。 |
| `noSelfAssign` | `error` | 禁止两边完全相同的赋值。 |
| `noSetterReturn` | `error` | 禁止从 setter 返回值。 |
| `noStringCaseMismatch` | `error` | 禁止将修改过大小写的字符串与不合规的值比较。 |
| `noSwitchDeclarations` | `error` | 禁止在 switch 分支中使用词法声明。 |
| `noUndeclaredDependencies` | `off` | 禁止使用未在 `package.json` 中声明的依赖项。 |
| `noUndeclaredVariables` | `error` | 防止使用文档中未声明的变量。 |
| `noUnknownFunction` | `error` | 禁止未知的 CSS 值函数（CSS）。 |
| `noUnknownMediaFeatureName` | `error` | 禁止未知的媒体特性名称（CSS）。 |
| `noUnknownProperty` | `error` | 禁止未知属性（CSS）。 |
| `noUnknownPseudoClass` | `error` | 禁止未知的伪类选择器（CSS）。 |
| `noUnknownPseudoElement` | `error` | 禁止未知的伪元素选择器（CSS）。 |
| `noUnknownTypeSelector` | `error` | 禁止未知的类型选择器（CSS）。 |
| `noUnknownUnit` | `error` | 禁止未知的 CSS 单位（CSS）。 |
| `noUnmatchableAnbSelector` | `error` | 禁止不可匹配的 An+B 选择器（CSS）。 |
| `noUnreachable` | `error` | 禁止不可达代码。 |
| `noUnreachableSuper` | `error` | 确保在类构造函数中在访问 `this` 之前每条代码路径都恰好调用一次 `super()`。 |
| `noUnsafeFinally` | `error` | 禁止在 finally 块中使用控制流语句。 |
| `noUnsafeOptionalChaining` | `error` | 在不允许 undefined 值的上下文中禁止使用可选链。 |
| `noUnusedFunctionParameters` | `error` | 禁止未使用的函数参数。 |
| `noUnusedImports` | `error` (safe fix override) | 禁止未使用的导入。 |
| `noUnusedLabels` | `error` | 禁止未使用的标签。 |
| `noUnusedPrivateClassMembers` | `error` | 禁止未使用的私有类成员。 |
| `noUnusedVariables` | `error` | 禁止未使用的变量。 |
| `noVoidTypeReturn` | `error` | 禁止在返回类型为 `void` 的函数中返回值。 |
| `useGraphqlNamedOperations` | `error` | 强制为 GraphQL 操作指定名称。 |
| `useImageSize` | `error` | 强制 `<img>` 元素具有 width 和 height 属性。 |
| `useImportExtensions` | `off` | 强制为相对导入指定文件扩展名。 |
| `useIsNan` | `error` | 检查 NaN 时要求调用 `isNaN()`。 |
| `useJsonImportAttributes` | `off` | 强制在 JSON 模块导入时使用 `{ type: "json" }`。 |
| `useParseIntRadix` | `error` | 使用 `parseInt()` 时强制一致地使用基数参数。 |
| `useSingleJsDocAsterisk` | `error` | 强制 JSDoc 注释行以单个星号开始（首行除外）。 |
| `useUniqueElementIds` | `off` | 防止在元素上使用静态字符串字面量 id 属性。 |
| `useValidForDirection` | `error` | 强制 `for` 循环的更新子句向正确方向移动计数器。 |
| `useValidTypeof` | `error` | 检查 `typeof` 表达式的结果是否与有效值进行比较。 |
| `useYield` | `error` | 要求生成器函数包含 `yield`。 |

### Nursery

| 规则 | 设置 | 描述 |
|------|---------|-------------|
| `noContinue` | `off` | 禁止 continue 语句。 |
| `noDeprecatedImports` | `off` | 限制导入已弃用的导出。 |
| `noDuplicateDependencies` | `error` | 防止列出重复的依赖项。 |
| `noDuplicatedSpreadProps` | `error` | 禁止在 spread props 中出现重复属性。 |
| `noEmptySource` | `error` | 禁止空的源文件。 |
| `noEqualsToNull` | `error` | 禁止使用 `==` 或 `!=` 与 `null` 比较。请改用 `===` 或 `!==`。 |
| `noFloatingPromises` | `off` | 要求对类似 Promise 的语句进行恰当处理。 |
| `noForIn` | `off` | 禁止使用 for-in 循环进行迭代。 |
| `noImportCycles` | `off` | 防止导入循环。 |
| `noIncrementDecrement` | `error` | 禁止使用 `++` 和 `--` 运算符（除非在 for 循环的尾部）。 |
| `noJsxLiterals` | `off` | 禁止在 JSX 元素中使用字符串字面量。 |
| `noLeakedRender` | `error` | 防止在 JSX 中渲染可能泄漏的值（例如 0 或 NaN）。 |
| `noMisusedPromises` | `off` | 禁止在几乎肯定是错误的场景中使用 Promise。 |
| `noMultiStr` | `error` | 禁止使用反斜杠续行的多行字符串。 |
| `noParametersOnlyUsedInRecursion` | `error` | 禁止仅在递归调用中使用的参数。 |
| `noProto` | `error` | 禁止使用 `__proto__` 属性。 |
| `noShadow` | `error` | 禁止变量声明遮蔽外部作用域中声明的变量。 |
| `noSyncScripts` | `error` | 防止使用同步脚本。 |
| `noTernary` | `off` | 禁止三元运算符。 |
| `noUnnecessaryConditions` | `off` | 禁止可静态确定为冗余的基于类型的条件。 |
| `noUnresolvedImports` | `off` | 在导入不存在的导出时发出警告。 |
| `noUnusedExpressions` | `error` | 禁止既不是函数调用也不是赋值的表达式语句。 |
| `noUselessCatchBinding` | `off` | 禁止未使用的 `catch` 绑定。 |
| `noUselessUndefined` | `error` | 禁止使用无用的 `undefined`。 |
| `useArraySortCompare` | `off` | 强制在 `Array.prototype.sort()` 中使用比较函数。 |
| `useConsistentArrowReturn` | `error` | 强制箭头函数主体的一致性。 |
| `useConsistentGraphqlDescriptions` | `error` | 要求在 GraphQL 文件中所有描述遵循相同风格（块或内联）。 |
| `useDeprecatedDate` | `error` | 要求 `@deprecated` 指令指定删除日期。 |
| `useExhaustiveSwitchCases` | `off` | 要求 switch-case 语句穷尽所有情况。 |
| `useExplicitType` | `off` | 在函数、方法、变量和参数中强制使用类型。 |
| `useFind` | `error` | 在查找单个结果时，强制在 `Array.prototype.filter()` 后使用 `[0]` 的场景改用 `Array.prototype.find()`。 |
| `useMaxParams` | `error` | 强制函数定义中的最大参数数量。 |
| `useSortedClasses` | `error` (safe fix override) | 强制对 CSS 工具类进行排序。 |
| `useSpread` | `error` | 在可能的情况下，强制使用扩展运算符替代 `Function.prototype.apply()`。 |
| `useUniqueGraphqlOperationName` | `error` | 确保文档内所有 GraphQL 操作具有唯一名称。 |

### 性能

| 规则 | 设置 | 描述 |
|------|---------|-------------|
| `noAccumulatingSpread` | `error` | 禁止在累加器上使用扩展 (`...`) 语法。 |
| `noAwaitInLoops` | `off` | 禁止在循环中使用 `await`。 |
| `noBarrelFile` | `error` | 禁止使用 barrel 文件。 |
| `noDelete` | `error` | 禁止使用 `delete` 操作符。 |
| `noDynamicNamespaceImportAccess` | `error` | 禁止动态访问命名空间导入。 |
| `noNamespaceImport` | `error` | 禁止使用命名空间导入。 |
| `noReExportAll` | `off` | 避免全部重新导出。 |
| `noUnwantedPolyfillio` | `error` | 防止来自 Polyfill.io 的重复 polyfill。 |
| `useGoogleFontPreconnect` | `error` | 在使用 Google Fonts 时确保使用 `preconnect` 属性。 |
| `useTopLevelRegex` | `error` | 要求将正则字面量声明为顶层。 |

### 安全

| 规则 | 设置 | 描述 |
|------|---------|-------------|
| `noBlankTarget` | `error` | 禁止 `target="_blank"` 而不带 `rel="noopener"`。 |
| `noDangerouslySetInnerHtml` | `error` | 阻止使用危险的 JSX props。 |
| `noDangerouslySetInnerHtmlWithChildren` | `error` | 当 DOM 元素或组件同时使用 children 和 `dangerouslySetInnerHTML` prop 时报告。 |
| `noGlobalEval` | `error` | 禁止使用全局 `eval()`。 |

### 风格

| 规则 | 设置 | 描述 |
|------|---------|-------------|
| `noCommonJs` | `off` | 禁止使用 Common JS 模块系统，优先 ESM 风格的导入。 |
| `noDefaultExport` | `off` | 禁止默认导出。 |
| `noDoneCallback` | `error` | 禁止在异步测试和钩子中使用回调。 |
| `noEnum` | `error` | 禁止 TypeScript enum。 |
| `noExportedImports` | `error` | 禁止导出一个被导入的变量。 |
| `noImplicitBoolean` | `off` | 禁止 JSX 布尔属性的隐式 true 值。 |
| `noInferrableTypes` | `error` | 禁止对使用字面量表达式初始化的变量、参数和类属性进行类型注解。 |
| `noMagicNumbers` | `off` | 报告“魔法数字”的使用——直接使用数字而不是赋值给具名常量。 |
| `noNamespace` | `error` | 禁止使用 TypeScript 的 namespace。 |
| `noNegationElse` | `error` | 如果 if 语句有 else 子句，则禁止在条件中使用否定。 |
| `noNestedTernary` | `error` | 禁止嵌套的三元表达式。 |
| `noNonNullAssertion` | `error` | 禁止使用 `!` 后缀操作符的非空断言。 |
| `noParameterAssign` | `error` | 禁止重新分配函数参数。 |
| `noParameterProperties` | `error` | 禁止在类构造函数中使用参数属性。 |
| `noProcessEnv` | `off` | 禁止使用 `process.env`。 |
| `noRestrictedGlobals` | `error` | 该规则允许你指定在应用中不希望使用的全局变量名。 |
| `noRestrictedImports` | `error` | 禁止在 import 或 require 时加载指定的模块。 |
| `noRestrictedTypes` | `error` | 禁止用户定义的类型。 |
| `noShoutyConstants` | `error` | 禁止使用其值为其名称大写形式的常量。 |
| `noSubstr` | `error` | 强制使用 `String.slice()` 代替 `String.substr()` 和 `String.substring()`。 |
| `noUnusedTemplateLiteral` | `error` | 如果不需要插值和特殊字符处理，则禁止模板字面量。 |
| `noUselessElse` | `error` | 当 if 块提前终止时禁止使用 else 块。 |
| `noYodaExpression` | `error` | 禁止使用 Yoda 表达式。 |
| `useArrayLiterals` | `error` | 禁止使用 `Array` 构造函数。 |
| `useAsConstAssertion` | `error` | 强制在字面量类型和类型注解时使用 as const。 |
| `useAtIndex` | `error` | 使用 `at()` 替代整数索引访问。 |
| `useBlockStatements` | `error` | 要求遵循花括号约定。 |
| `useCollapsedElseIf` | `error` | 强制在 else 子句中使用 `else if` 而非嵌套 `if`。 |
| `useCollapsedIf` | `error` | 强制使用单一 `if` 而非嵌套 `if` 子句。 |
| `useComponentExportOnlyModules` | `off` | 强制只在仅导出 React 组件的模块中声明组件。 |
| `useConsistentArrayType` | `error` | 要求一致地使用 `T[]` 或 `Array<T>`。 |
| `useConsistentBuiltinInstantiation` | `error` | 除了 `String`、`Number` 和 `Boolean`，强制对所有内置对象使用 new。 |
| `useConsistentCurlyBraces` | `off` | 强制在 JSX 属性和子元素中一致使用花括号。 |
| `useConsistentMemberAccessibility` | `error` | 要求在类属性和方法上使用一致的可访问性修饰符。 |
| `useConsistentObjectDefinitions` | `error` | 要求一致地声明对象字面量。 |
| `useConst` | `error` | 要求对只被赋值一次的变量使用 const 声明。 |
| `useDefaultParameterLast` | `error` | 强制默认参数和可选参数放在最后。 |
| `useDefaultSwitchClause` | `error` | 在 switch 语句中要求包含 `default` 分支。 |
| `useDeprecatedReason` | `error` | 使用 `@deprecated` 指令时要求指定原因参数。 |
| `useEnumInitializers` | `error` | 要求每个 enum 成员值显式初始化。 |
| `useExplicitLengthCheck` | `off` | 强制显式比较值的 `length`、`size`、`byteLength` 或 `byteOffset` 属性。 |
| `useExponentiationOperator` | `error` | 禁止使用 `Math.pow`，优先使用 `**` 运算符。 |
| `useExportType` | `error` | 倡导对类型使用 export type。 |
| `useExportsLast` | `off` | 要求所有导出在所有非导出语句之后声明。 |
| `useFilenamingConvention` | `error` | 强制 JavaScript 和 TypeScript 文件名的命名约定（kebab-case，ASCII）。 |
| `useForOf` | `error` | 当 for 循环中使用索引从被迭代数组提取元素时，建议使用 for-of 循环。 |
| `useFragmentSyntax` | `error` | 强制使用 `<>...</>` 而非 `<Fragment>...</Fragment>`。 |
| `useGraphqlNamingConvention` | `error` | 验证所有枚举值都大写。 |
| `useGroupedAccessorPairs` | `error` | 强制在类和对象定义中将同一属性的 getter 和 setter 相邻放置。 |
| `useImportType` | `error` | 倡导对类型使用 `import type`。 |
| `useLiteralEnumMembers` | `error` | 要求所有 enum 成员为字面量值。 |
| `useNamingConvention` | `off` | 命名约定规则（已禁用）。 |
| `useNodeAssertStrict` | `error` | 倡导使用 `node:assert/strict` 代替 `node:assert`。 |
| `useNodejsImportProtocol` | `error` | 强制对 Node.js 内置模块使用 `node:` 协议。 |
| `useNumberNamespace` | `error` | 使用 `Number` 属性而非全局属性。 |
| `useNumericSeparators` | `error` | 在数字字面量中强制使用数字分隔符。 |
| `useObjectSpread` | `error` | 在构造新对象时优先使用对象扩展而非 `Object.assign()`。 |
| `useReadonlyClassProperties` | `error` | 如果成员在构造函数外从未被修改，则强制将其标记为 readonly。 |
| `useSelfClosingElements` | `error` | 防止对无子元素的组件使用多余的闭合标签。 |
| `useShorthandAssign` | `error` | 在可能的情况下要求使用赋值运算符简写。 |
| `useShorthandFunctionType` | `error` | 强制在类型中使用函数类型而非带有调用签名的对象类型。 |
| `useSingleVarDeclarator` | `off` | 禁止在同一变量语句中声明多个变量。 |
| `useSymbolDescription` | `error` | 要求为 `Symbol()` 提供描述参数。 |
| `useTemplate` | `error` | 优先使用模板字面量而非字符串拼接。 |
| `useThrowNewError` | `error` | 抛出错误时要求使用 new。 |
| `useThrowOnlyError` | `error` | 禁止抛出非 `Error` 值。 |
| `useTrimStartEnd` | `error` | 强制使用 `String.trimStart()` 和 `String.trimEnd()` 代替 `String.trimLeft()` 和 `String.trimRight()`。 |
| `useUnifiedTypeSignatures` | `error` | 禁止可合并为单个签名的重载签名。 |
| `noDescendingSpecificity` | `error` | 禁止低优先级选择器出现在高优先级选择器之后（CSS）。 |
| `noValueAtRule` | `error` | 禁止在 css modules 中使用 `@value` 规则（CSS）。 |

### 可疑模式

| 规则 | 设置 | 描述 |
|------|---------|-------------|
| `noAlert` | `error` | 禁止使用 `alert`、`confirm` 和 `prompt`。 |
| `noApproximativeNumericConstant` | `error` | 使用标准常量代替近似字面量。 |
| `noAssignInExpressions` | `error` | 禁止在表达式中进行赋值。 |
| `noAsyncPromiseExecutor` | `error` | 禁止将异步函数用作 Promise 执行器。 |
| `noBiomeFirstException` | `error` | 防止在配置文件的 `files.includes` 的第一位使用 `!` 模式。 |
| `noBitwiseOperators` | `error` | 禁止位运算符。 |
| `noCatchAssign` | `error` | 禁止在 catch 子句中重新分配异常。 |
| `noClassAssign` | `error` | 禁止重新分配类成员。 |
| `noCommentText` | `error` | 防止将注释插入为文本节点。 |
| `noCompareNegZero` | `error` | 禁止与 `-0` 比较。 |
| `noConfusingLabels` | `error` | 禁止不是循环的带标签语句。 |
| `noConfusingVoidType` | `error` | 禁止在泛型或返回类型之外使用 void 类型。 |
| `noConsole` | `off` | 禁止使用 `console`。 |
| `noConstEnum` | `error` | 禁止 TypeScript const enum。 |
| `noConstantBinaryExpressions` | `error` | 禁止运算不影响值的表达式。 |
| `noControlCharactersInRegex` | `error` | 防止在正则字面量中出现控制字符和匹配控制字符的一些转义序列。 |
| `noDebugger` | `error` | 禁止使用 debugger。 |
| `noDocumentCookie` | `error` | 禁止直接给 document.cookie 赋值。 |
| `noDoubleEquals` | `error` | 要求使用 `===` 和 `!==`。 |
| `noDuplicateAtImportRules` | `error` | 禁止重复的 `@import` 规则（CSS）。 |
| `noDuplicateCase` | `error` | 禁止重复的 case 标签。 |
| `noDuplicateClassMembers` | `error` | 禁止重复的类成员。 |
| `noDuplicateCustomProperties` | `error` | 禁止声明块中重复的自定义属性（CSS）。 |
| `noDuplicateElseIf` | `error` | 禁止 if-else-if 链中重复的条件。 |
| `noDuplicateFields` | `error` | 禁止 GraphQL 操作中重复的字段。 |
| `noDuplicateFontNames` | `error` | 禁止字体族中重复的名称（CSS）。 |
| `noDuplicateObjectKeys` | `error` | 禁止对象中出现两个同名键。 |
| `noDuplicateParameters` | `error` | 禁止重复的函数参数名。 |
| `noDuplicateProperties` | `error` | 禁止声明块中重复的属性（CSS）。 |
| `noDuplicateSelectorsKeyframeBlock` | `error` | 禁止关键帧块中重复的选择器（CSS）。 |
| `noDuplicateTestHooks` | `error` | describe 块内不应包含重复的钩子。 |
| `noEmptyBlock` | `error` | 禁止 CSS 空块（CSS）。 |
| `noEmptyBlockStatements` | `error` | 禁止空的块语句和静态块。 |
| `noEmptyInterface` | `error` | 禁止声明空接口。 |
| `noEvolvingTypes` | `error` | 禁止变量通过重赋值演变为 any 类型。 |
| `noExplicitAny` | `error` | 禁止使用 any 类型。 |
| `noExportsInTest` | `error` | 禁止在包含测试的文件中使用 export 或 module.exports。 |
| `noExtraNonNullAssertion` | `error` | 防止在 TypeScript 文件中错误使用非空断言操作符 `!`。 |
| `noFallthroughSwitchClause` | `error` | 禁止 switch 分支贯穿（fallthrough）。 |
| `noFocusedTests` | `error` | 禁止带重点的测试（focused tests）。 |
| `noFunctionAssign` | `error` | 禁止重新分配函数声明。 |
| `noGlobalAssign` | `error` | 禁止对原生对象和只读全局变量赋值。 |
| `noGlobalIsFinite` | `error` | 使用 `Number.isFinite` 代替全局 `isFinite`。 |
| `noGlobalIsNan` | `error` | 使用 `Number.isNaN` 代替全局 `isNaN`。 |
| `noImplicitAnyLet` | `error` | 禁止在变量声明上使用隐式 any 类型。 |
| `noImportAssign` | `error` | 禁止对导入绑定进行赋值。 |
| `noImportantInKeyframe` | `error` | 禁止在关键帧声明中使用无效的 `!important`（CSS）。 |
| `noIrregularWhitespace` | `error` | 禁止使用不规则的空白字符。 |
| `noLabelVar` | `error` | 禁止与变量同名的标签。 |
| `noMisleadingCharacterClass` | `error` | 禁止在字符类语法中使用由多个代码点构成的字符。 |
| `noMisleadingInstantiator` | `error` | 强制正确使用 `new` 和构造函数。 |
| `noMisplacedAssertion` | `error` | 检查断言函数（例如 expect）是否放置在 `it()` 调用内部。 |
| `noMisrefactoredShorthandAssign` | `error` | 当变量同时出现在左右两侧时，禁止使用简写赋值。 |
| `noOctalEscape` | `error` | 禁止在字符串字面量中使用八进制转义序列。 |
| `noPrototypeBuiltins` | `error` | 禁止直接使用 `Object.prototype` 的内置方法。 |
| `noQuickfixBiome` | `error` | 禁止在编辑器设置文件中使用 `quickfix.biome`。 |
| `noRedeclare` | `error` | 禁止在同一作用域内重新声明变量、函数、类和类型。 |
| `noRedundantUseStrict` | `error` | 防止出现冗余的 `use strict`。 |
| `noSelfCompare` | `error` | 禁止两边完全相同的比较。 |
| `noShadowRestrictedNames` | `error` | 禁止标识符遮蔽受限制的名称。 |
| `noShorthandPropertyOverrides` | `error` | 禁止覆盖相关长属性的简写属性（CSS）。 |
| `noSkippedTests` | `error` | 禁止被禁用的测试。 |
| `noSparseArray` | `error` | 禁止使用稀疏数组（有空洞的数组）。 |
| `noTemplateCurlyInString` | `error` | 禁止在普通字符串中使用模板字面量占位语法。 |
| `noThenProperty` | `error` | 禁止 then 属性。 |
| `noTsIgnore` | `error` | 禁止使用 TypeScript 指令 `@ts-ignore`。 |
| `noUnassignedVariables` | `error` | 禁止声明但未赋值的 let 或 var 变量。 |
| `noUnknownAtRules` | `error` | 禁止未知的 at-rules（CSS）。 |
| `noUnsafeDeclarationMerging` | `error` | 禁止接口与类之间不安全的声明合并。 |
| `noUnsafeNegation` | `error` | 禁止使用不安全的否定操作 (`!`)。 |
| `noUselessEscapeInString` | `error` | 禁止字符串字面量中不必要的转义。 |
| `noUselessRegexBackrefs` | `error` | 禁止在正则字面量中始终匹配空字符串的无用反向引用。 |
| `noVar` | `error` | 禁止使用 `var`。 |
| `noWith` | `error` | 在非严格上下文中禁止使用 with 语句。 |
| `useAdjacentOverloadSignatures` | `error` | 禁止使用不相邻的重载签名。 |
| `useAwait` | `error` | 确保异步函数使用 `await`。 |
| `useBiomeIgnoreFolder` | `error` | 推动在配置文件中正确使用忽略文件夹的方式。 |
| `useDefaultSwitchClauseLast` | `error` | 强制 switch 语句中 `default` 子句放在最后。 |
| `useErrorMessage` | `error` | 在创建内置错误时强制传递 message 值。 |
| `useGetterReturn` | `error` | 强制 getter 方法始终返回一个值。 |
| `useGoogleFontDisplay` | `error` | 强制在 Google Fonts 中使用推荐的 display 策略。 |
| `useGuardForIn` | `error` | 要求 for-in 循环包含 if 语句作为保护。 |
| `useIsArray` | `error` | 使用 `Array.isArray()` 代替 `instanceof Array`。 |
| `useIterableCallbackReturn` | `error` | 强制可迭代回调中的返回值一致。 |
| `useNamespaceKeyword` | `error` | 要求使用 namespace 关键字而不是 module 来声明 TypeScript 的命名空间。 |
| `useNumberToFixedDigitsArgument` | `error` | 强制在 `Number#toFixed()` 中使用 digits 参数。 |
| `useStaticResponseMethods` | `error` | 在可能的情况下，优先使用静态的 `Response` 方法而不是 `new Response()` 构造函数。 |
| `useStrictMode` | `error` | 在脚本文件中强制使用 `use strict` 指令。 |

## 注意

某些规则被禁用，因为它们在 Scanner 上运行过慢。正如 [Biome 文档](https://biomejs.dev/guides/investigate-slowness/#first-things-first) 中所述，启用的项目规则在带来更高级分析的同时会产生已知的性能开销。

在我们的测试中，我们发现这些规则可能会使 lint 的时间从 300ms 增加到 13s。